Re: [SQL] Re: Another nut to crack with insertion into tables... *sigh* - Mailing list pgsql-sql

From Herouth Maoz
Subject Re: [SQL] Re: Another nut to crack with insertion into tables... *sigh*
Date
Msg-id l0311070ab23566f0a90d@[147.233.159.109]
Whole thread Raw
In response to Re: Another nut to crack with insertion into tables... *sigh*  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
At 16:02 +0200 on 28/9/98, Tom Lane wrote:


>
> I believe sub-selects are currently only supported in WHERE clauses.
> Supporting them elsewhere is on the TODO list for a future release
> (no, 6.4 won't have it).  In the meantime you'll have to read back
> the result of the sub-select and include it in the text of the INSERT.
>
> (I'm not sure whether the SQL spec allows a select in an INSERT like this
> anyway.  What happens if the sub-select returns no tuples, or more than
> one tuple?)

First, there is an exception which is supposed to be thrown in such a case.

But anyway, there is no reason to do things like this. Read the "insert"
manpage. The syntax is:

     insert into classname
         [(att.expr-1 [,att_expr.i] )]
          {values (expression1 [,expression-i] ) |
         select expression1 [,expression-i]
          [from from-list] [where qual]


So, you should format your insert like this:

INSERT INTO my_table
(int_field, text_field, another_int_field, another_text_field )
SELECT 15, 'The Wind in the Willows', foreign_int_field, foreign_text_field
FROM foreign_table
WHERE ...

Everything which you want inserted literally, you put as constants on the
select list. It's a valid expression. Anything you want from the other
table (or tables!), you mention by its field name.

Very simple, and has been working for ages.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma



pgsql-sql by date:

Previous
From: "Bryan White"
Date:
Subject: Setting current time on insert
Next
From: Glenn Sullivan
Date:
Subject: Getting datatype before SELECT